﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BoletoNet;
using System.IO;

namespace RzCorportativo.Views.Financeiro
{
    public partial class Boleto : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.Cpf.Attributes.Add("url", this.ResolveUrl("~/Views/Farmacia/Atendimento.aspx/GetPaciente"));
        }

        protected void btn_Click(object sender, EventArgs e)
        {

            string vencimento = DataVencimento.Text;
            String valorBoleto = Valor.Text;
            String numeroDocumento = "B20005446";

            //cedente
            String cedente_codigo = "1311111";
            String cedente_nossoNumeroBoleto = "1234567890";
            String cedente_cpfCnpj = "123.456.789-01";
            String cedente_nome = "PAULO FREIRE - FOUR FREIRES INF.";
            String cedente_agencia = "1000";
            String cedente_conta = "22507";
            String cedente_digitoConta = "6";

            //sacado
            String sacado_cpfCnpj = "000.000.000-00";
            String sacado_nome = Sacado.Text;
            String sacado_endereco = Endereco.Text;
            String sacado_bairro = Bairro.Text;
            String sacado_cidade = Cidade.Text;
            String sacado_cep = Cep.Text;
            String sacado_uf = UF.Text;

            Cedente cedente = new Cedente(cedente_cpfCnpj,
            cedente_nome,
            cedente_agencia,
            cedente_conta,
            cedente_digitoConta);
            cedente.Codigo = Convert.ToInt32(cedente_codigo);

            BoletoNet.Boleto boleto = new BoletoNet.Boleto(Convert.ToDateTime(vencimento), Convert.ToDecimal(valorBoleto), "109", cedente_nossoNumeroBoleto, cedente);
            boleto.NumeroDocumento = numeroDocumento;
            
            Sacado sacado = new Sacado(sacado_cpfCnpj, sacado_nome);
            boleto.Sacado = sacado;
            boleto.Sacado.Endereco.End = sacado_endereco;
            boleto.Sacado.Endereco.Bairro = sacado_bairro;
            boleto.Sacado.Endereco.Cidade = sacado_cidade;
            boleto.Sacado.Endereco.CEP = sacado_cep;
            boleto.Sacado.Endereco.UF = sacado_uf;

            Instrucao_Itau instrucao = new Instrucao_Itau();
            instrucao.Descricao = "Não Receber após o vencimento";

            boleto.Instrucoes.Add(instrucao);
            EspecieDocumento_Caixa especie = new EspecieDocumento_Caixa("99");
            boleto.EspecieDocumento = especie;

            BoletoBancario boleto_bancario = new BoletoBancario();
            boleto_bancario.CodigoBanco = 104;
            boleto_bancario.Boleto = boleto;
            boleto_bancario.MostrarCodigoCarteira = true;
            boleto_bancario.Boleto.Valida();

            boleto_bancario.MostrarComprovanteEntrega = true;
            ArquivoRemessa arquivoRemessa = new ArquivoRemessa(TipoArquivo.CNAB400);
            boleto_bancario.GerarArquivoRemessa = true;

            MemoryStream memory = new MemoryStream();
            Banco itau = new Banco(341);
            BoletoNet.Boletos __boletos = new BoletoNet.Boletos();
            __boletos.Add(boleto);
            arquivoRemessa.GerarArquivoRemessa("0", itau, boleto.Cedente, __boletos, memory, 1);

            var image = boleto_bancario.GeraImagemCodigoBarras(boleto);
            image.Save(Server.MapPath("~/") + boleto.CodigoBarra.Codigo + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);

            pnlControl.Controls.Add(boleto_bancario);
        }
    }
}